package com.xj.zhihudemo.retrofit;

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by Xujing on 16/8/29.
 */
public class ApiClient {
    static Retrofit mRetrofit = null;
    static String BASE_URL = "http://news-at.zhihu.com/api/4/";

    public static Retrofit retrofit() {


        //缓存路径
//        File cacheFile = new File(App.class.getAbsolutePath(), "HttpCache");
//        Cache cache = new Cache(cacheFile, 1024 * 1024 * 10);//缓存文件为10MB

        if (mRetrofit == null) {
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
//
//            /**
//             *设置缓存，代码略
//             */
//            Interceptor interceptor = new Interceptor() {
//                @Override
//                public Response intercept(Chain chain) throws IOException {
//                    Request request = chain.request();
//                    //如果网络不可用，只使用缓存
//                    if (!StringUtils.isNetworkReachable(App.getContext())) {
//                        request = request.newBuilder()
//                                .cacheControl(CacheControl.FORCE_CACHE)
//                                .build();
//                    } else {
//                        request = request.newBuilder()
//                                //有网络时只从网络获取
//
////                                ToastUtils.with(MainActivity.class)
//                                .cacheControl(CacheControl.FORCE_NETWORK)
//                                .build();
//                    }
//                    Response response = chain.proceed(request);
//                    if (StringUtils.isNetworkReachable()) {
//                        // 有网络时 设置缓存超时时间10分钟
//                        int maxAge = 10 * 60;
//                        response.newBuilder()
//                                .header("Cache-Control", "public, max-age=" + maxAge)
//                                // 清除头信息，因为服务器如果不支持，会返回一些干扰信息，不清除下面无法生效
//                                .removeHeader("Pragma")
//                                .build();
//                    } else {
//                        // 无网络时，设置超时为4周
//                        int maxStale = 60 * 60 * 24 * 28;
//                        response.newBuilder()
//                                .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
//                                .removeHeader("Pragma")
//                                .build();
//                    }
//                    return response;
//                }
//            };
//
//            builder.addInterceptor(interceptor);
//            builder.cache(cache);
            /**
             *  公共参数，代码略
             */

            /**
             * 设置头，代码略
             */

            /**
             * Log信息拦截器，代码略
             */

            /**
             * 设置cookie，代码略
             */

            /**
             * 设置超时和重连，代码略
             */
            //以上设置结束，才能build(),不然设置白搭
            OkHttpClient okHttpClient = builder.build();
            mRetrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(okHttpClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return mRetrofit;
    }
}

